#include <iostream>
#include <memory>
#include <thread>
#include <vector>
#include "../transaction/Transaction.h"
#include <thread>
#include "./Group.h"

class Pipeline {
  	public:
    	explicit Pipeline(int numRows);
		void pipelineInitialize();
		void pipelineAddTransactions(const std::vector<Transaction>& transactions);

    private:
		// thread pool for groups
		std::vector<Group> groups;

		// producer consumer pools
		std::vector<Transaction> producerPool;
		// and a flag track the number of transactions in the pool
		int producerPoolSize;
};
